Typical Computed Aided Design (CAD) systems allow users to position geometric entities relative to each other in a drawing. For example, users can create geometric entities in a CAD model such as two or three-dimensional shapes and add geometric constraints that specify the relative positions, sizes or shapes of the geometric entities with respect to each other. After the geometric entities and geometric constraints have been specified or edited, the CAD system can automatically update attributes of the geometric entities (such as changes to point coordinates or line equation coefficients) so that they satisfy the given geometric constraints. This effectively repositions, resizes and reshapes the geometric entities to satisfy the geometric constraints. A software system known as a variational geometric constraint solver (VGCS) is typically used to perform this task. The constraint solver needs to consider all the geometric entities and all the geometric constraints simultaneously to determine new attributes of the geometric entities. This process is similar to solving a system of simultaneous equations in which variables correspond to attributes of the geometric entities and equations correspond to geometric constraints.
The geometric constraint solver may produce unexpected results because geometric constraints link geometric entities together and a single change may transitively propagate to many other geometric entities. For example, in a constrained floor plan of a building, moving one chair in one room might cause the whole building to be reshaped. Even if the result is correct from the mathematical point of view (because all geometric constraints are satisfied) it is probably not the result the user wanted to see. The reason for this behavior is that the geometric constraints are “two-way”—modifying any geometric entity involved in a two-way geometric constraint may modify any other entity involved in the same geometric constraint. Thus, for example, if the chair is constrained to be a certain distance from a wall, moving the chair may cause the wall to move, which may cause other walls to move, and so on.